An application having a Graphical User Interface (GUI) may take many forms. It may have a web version, running in browsers such as CHROME™, FIREFOX™, or the like. Additionally or alternatively, the application may have a desktop version, running on WINDOWS™, OSX™, or the like. Additionally or alternatively, the application may have a native mobile version, running on iOS™, ANDROID™, or the like. Additionally or alternatively, the application may have a web mobile version, running on mobile browsers. Additionally or alternatively, the application may have been written using a cross platform framework such as XAMARIN™, REACT NATIVE™, or the like.
Due to differences in the underlying platform, each version may be different. For example, even using the same programming language may result in different outcomes, such as the case due to different JavaScript engines for each platform. Additionally or alternatively, due to different screen sizes, capabilities, or the like, the same application may have different GUI on each platform.
Additionally or alternatively, during the life cycle of an application it may change. Features may be added, removed, or change place. Additionally or alternatively, the User eXperience (UX) may change, resulting in a changing GUI over time. Additionally or alternatively, users with different roles or permissions may see different views of the same screen.